//
//  SceneDelegate.swift
//  Retail
//
//  Created by zhangjikuan on 2020/6/29.
//  Copyright © 2020 aqdeal. All rights reserved.
//

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?
    
  
    func navigationController(_ config:Dictionary<String, Any>) -> BaseNavigationController {
        let tabBarConfig = TabBarConfig.init()
        tabBarConfig.config(config)
        
        let instanceCtr = InstanceFactory.instance.createInstanceController(tabBarConfig.className!)
        let nav =  BaseNavigationController.init(rootViewController: instanceCtr as! UIViewController)
        
        nav.tabBarItem.title = tabBarConfig.tabBarItem_title!
    
        nav.tabBarItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor:UIColor.brown], for: .normal)
          
        nav.tabBarItem.setTitleTextAttributes([NSAttributedString.Key.foregroundColor:UIColor.red], for: .selected)
        
        return nav
    }
    
    func configRootViewController() {
        // 设置window的rootViewController
        let nav1 =  BaseNavigationController.init(rootViewController: OneViewController())
        let nav2 =  BaseNavigationController.init(rootViewController: TwoViewController())
        let nav3 =  BaseNavigationController.init(rootViewController: ThreeViewController())
        let nav4 =  BaseNavigationController.init(rootViewController: FourViewController())
        nav1.tabBarItem.title = "首页"
        nav2.tabBarItem.title = "推荐"
        nav3.tabBarItem.title = "购物车"
        nav4.tabBarItem.title = "逛逛"
        nav1.tabBarItem.image = UIImage.init(named: "star")
        
        let instanceCtr = InstanceFactory.instance.createInstanceController("TwoViewController")
        
        let nav5 =  BaseNavigationController.init(rootViewController: instanceCtr as! UIViewController)
        nav5.tabBarItem.title = "我的"
        
        
        let tabController = BaseTabBarController()
        tabController.viewControllers = [nav1,nav2,nav3,nav4, nav5]
        
        
        let rootViewController = tabController
        
        
        self.window?.rootViewController = rootViewController
        
    }

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        // 创建window
        self.window = UIWindow(windowScene: windowScene)
        self.window?.makeKeyAndVisible()
//        configRootViewController()
        
        self.window?.rootViewController = BaseTabBarController()
    }

    func sceneDidDisconnect(_ scene: UIScene) {
        // Called as the scene is being released by the system.
        // This occurs shortly after the scene enters the background, or when its session is discarded.
        // Release any resources associated with this scene that can be re-created the next time the scene connects.
        // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
    }

    func sceneDidBecomeActive(_ scene: UIScene) {
        // Called when the scene has moved from an inactive state to an active state.
        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
    }

    func sceneWillResignActive(_ scene: UIScene) {
        // Called when the scene will move from an active state to an inactive state.
        // This may occur due to temporary interruptions (ex. an incoming phone call).
    }

    func sceneWillEnterForeground(_ scene: UIScene) {
        // Called as the scene transitions from the background to the foreground.
        // Use this method to undo the changes made on entering the background.
    }

    func sceneDidEnterBackground(_ scene: UIScene) {
        // Called as the scene transitions from the foreground to the background.
        // Use this method to save data, release shared resources, and store enough scene-specific state information
        // to restore the scene back to its current state.
    }


}

